package Multithreading.Wait_and_Notify001;

/**
 * ClassName:Dome004
 * Package:Multithreading
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/3/5-21:12
 * @Version:v1.0
 */
public class Wait_and_Notify001 {
    /**生产者和消费者(等待唤醒机制)
     * 生产者消费者模式是一个十分经典的多线程协作模式
     *
     * 生产者：生产数据
     * 消费者：消费数据
     * 核心思想：利用桌子来控制线程的执行
     *
     * 消费者等待
     * 消费者{1.判断桌子上是否有食物
     *       2.如果没有就等待(等待)}
     * 生产者{1.制作食物
     *       2.把食物放在桌子上
     *       3.叫醒等待的消费者开吃(唤醒机制--notify)}
     *
     * 生产者等待
     * 生产者{1.判断桌子上是否有食物
     *       2.有：等待
     *       3.没有：制作食物
     *       4.把食物放在桌子上
     *       5.叫醒等待的消费者开吃(唤醒机制)
     * 消费者{1.判断桌子上是否有食物
     *       2.如果没有就等待
     *       3.如果有就开吃
     *       4.吃完之后,唤醒厨师继续做}
     *
     *
     * void wait() 当前线程等待,直到被其他线程唤醒
     * void notify() 随机唤醒单个线程
     * void notifyAll() 唤醒所有线程
     *
     **/
}
